2023/12/231510字符
数组类型
package main
import "fmt"
func main() {
var a [5] int
fmt.Println(a) //--> [0 0 0 0 0]
var c = [5] int{}
fmt.Println(c) //--> [0 0 0 0 0]
var b = [...] int{ 1, 2, 3, 4, 5 }
fmt.Println(b) //--> [1 2 3 4 5]
// 内置函数
// len(b) // 长度 (array/map/slice/string)
// cap(b) // 容量
}
数组的遍历
package main
import "fmt"
func main() {
var arr = [...] int{ 1, 2, 3, 4, 5 }
for index, value := range arr {
fmt.Println(index, value)
}
}
内存分析
数组的每一项都是值类型,被直接赋值后的数组会开辟新的内存空间
package main
import "fmt"
func main() {
var arr1 = [...] int{ 1, 2, 3, 4, 5 }
var arr2 = arr1
fmt.Printf("%p, %p\n", &arr1, &arr2) //--> 0xc00012c030, 0xc00012c060
fmt.Println(arr1 == arr2) //--> true go 会对数组中做深度比较
arr2[0] = 0
fmt.Println(arr1 == arr2, arr1, arr2) //--> false [1 2 3 4 5] [0 2 3 4 5]
fmt.Println(&arr1[0], &arr2[0]) //--> 0xc0000160c0 0xc0000160f0
fmt.Println(&arr1[1], &arr2[1]) //--> 0xc0000160c8 0xc0000160f8
arr2[1] = 6
fmt.Println(arr1, arr2) //--> [1 2 3 4 5] [1 6 3 4 5]
}
冒泡排序
package main
import "fmt"
func main() {
var arr = [...] int{ 3, 1, 6, 9, 4 }
const length = len(arr)
for i := 1; i < length; i++ {
for j := 0; j < length - i; j++ {
if arr[j] > arr[j + 1] {
arr[j], arr[j + 1] = arr[j + 1], arr[j]
}
}
}
fmt.Println(arr) //--> [1 3 4 6 9]
}